<?php
/**
 * Refleja la tabla "tablas" de la base de datos, maneja los regitros de
 * marcas, categorias y generos
 *
 * @author gorka
 */
class Tablas_model extends APP_Model{
    var $id=0;
    var $nombre=0;
    var $padre_id=0;
    var $eliminado=FALSE;

    function __construct() {
        parent::__construct();
    }


    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getNombre() {
        return $this->nombre;
    }

    public function setNombre($nombre) {
        $this->nombre = $nombre;
    }

    public function getPadreId() {
        return $this->padre_id;
    }

    public function setPadreId($padre_id) {
        $this->padre_id = $padre_id;
    }

    public function getEliminado() {
        return $this->eliminado;
    }

    public function setEliminado($eliminado) {
        $this->eliminado = $eliminado;
    }

    /**
     * Obtiene los resultados paginados
     * @param $tablaName nombre de la subtabla a consultar
     * @param $start Cantidad de resultados a ser mostrados
     * @param $limit Inicio de los resultados a mostrar
     * @return array
     */
    function getPaginateResult($tablaName, $start,$limit)
    {
        $query = $this->db->query("
            SELECT *
            FROM tablas t
            WHERE padre_id = (SELECT id FROM tablas WHERE nombre like '$tablaName')
            LIMIT $start,$limit
        ");
        return $query->result_array();
    }

    /**
     * Obtiene los resultados paginados
     * @param $tablaName nombre de la subtabla a consultar
     * @return integer
     */
    function countAll($tablaName)
    {
        $query = $this->db->query("
            SELECT *
            FROM tablas t
            WHERE padre_id = (SELECT id FROM tablas WHERE nombre like '$tablaName')
        ");
        return count($query->result_array());
    }

    function add()
    {
        $this->db->insert('tablas',$this);
    }

    /**
     * Actualiza los datos de la instacia actual dado un identificador
     * @return Boolean
     */
    function update()
    {
        $band = false;
        $this->db->where('id', $this->getId());
        return $this->db->update('tablas', $this);
    }

    function getAllByPadre($tablaName)
    {
        $this->db->select('id');
        $this->db->from('tablas');
        $this->db->like('nombre',$tablaName);

        $query = $this->db->get();
        if ($query->num_rows() > 0){
           $row = $query->row();
           $this->setPadreId($row->id);
        }

        $query = $this->db->get_where('tablas',
            array(
                'padre_id' => $this->getPadreId(),
                'eliminado' => false
            )
        );
        return $query->result_array();
    }
}
?>